home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Visual Cafe Pro v1.0 / TUTORIAL.BIN / BorderPanel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-16  |  7.9 KB  |  437 lines

  1. package symantec.itools.awt;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Font;
  7. import java.awt.FontMetrics;
  8. import java.awt.Graphics;
  9. import java.awt.Insets;
  10. import java.awt.LayoutManager;
  11. import java.awt.Panel;
  12.  
  13. public class BorderPanel extends Panel implements AlignStyle, BevelStyle {
  14.    protected static final int labelpadx = 10;
  15.    protected static final int labelipadx = 4;
  16.    protected Color borderColor;
  17.    protected Color labelColor;
  18.    protected int padtop;
  19.    protected int padbottom;
  20.    protected int padleft;
  21.    protected int padright;
  22.    protected int ixPad;
  23.    protected int iyPadTop;
  24.    protected int iyPadBottom;
  25.    protected int style;
  26.    protected String label;
  27.    protected int labelAlignment;
  28.    protected Insets internalInsets;
  29.    protected Panel panel;
  30.    Dimension oldSize;
  31.  
  32.    public BorderPanel() {
  33.       this((String)null, 1, 2);
  34.    }
  35.  
  36.    public BorderPanel(int var1) {
  37.       this((String)null, 1, var1);
  38.    }
  39.  
  40.    public BorderPanel(String var1) {
  41.       this(var1, 1, 2);
  42.    }
  43.  
  44.    public BorderPanel(String var1, int var2) {
  45.       this(var1, var2, 2);
  46.    }
  47.  
  48.    public BorderPanel(String var1, int var2, int var3) {
  49.       this.oldSize = new Dimension();
  50.       this.borderColor = Color.black;
  51.       this.labelColor = Color.black;
  52.       this.padleft = 6;
  53.       this.padright = 6;
  54.       this.padtop = 10;
  55.       this.padbottom = 6;
  56.       this.ixPad = 4;
  57.       this.iyPadTop = 2;
  58.       this.iyPadBottom = 7;
  59.       this.label = var1 != null && var1.length() == 0 ? null : var1;
  60.       this.labelAlignment = var2;
  61.       this.internalInsets = new Insets(10, 10, 10, 10);
  62.       this.style = var3;
  63.       this.setLayout((LayoutManager)null);
  64.       super.add(this.panel = new Panel());
  65.       this.sizepanel(true);
  66.    }
  67.  
  68.    public void setPaddingTop(int var1) {
  69.       this.padtop = var1;
  70.       this.sizepanel(true);
  71.       ((Component)this).invalidate();
  72.    }
  73.  
  74.    public int getPaddingTop() {
  75.       return this.padtop;
  76.    }
  77.  
  78.    public void setPaddingBottom(int var1) {
  79.       this.padbottom = var1;
  80.       this.sizepanel(true);
  81.       ((Component)this).invalidate();
  82.    }
  83.  
  84.    public int getPaddingBottom() {
  85.       return this.padbottom;
  86.    }
  87.  
  88.    public void setPaddingLeft(int var1) {
  89.       this.padleft = var1;
  90.       this.sizepanel(true);
  91.       ((Component)this).invalidate();
  92.    }
  93.  
  94.    public int getPaddingLeft() {
  95.       return this.padleft;
  96.    }
  97.  
  98.    public void setPaddingRight(int var1) {
  99.       this.padright = var1;
  100.       this.sizepanel(true);
  101.       ((Component)this).invalidate();
  102.    }
  103.  
  104.    public int getPaddingRight() {
  105.       return this.padright;
  106.    }
  107.  
  108.    public void setIPadTop(int var1) {
  109.       this.iyPadTop = var1;
  110.       this.sizepanel(true);
  111.       ((Component)this).invalidate();
  112.    }
  113.  
  114.    public void setIPadBottom(int var1) {
  115.       this.iyPadBottom = var1;
  116.       this.sizepanel(true);
  117.       ((Component)this).invalidate();
  118.    }
  119.  
  120.    public int getIPadTop() {
  121.       return this.iyPadTop;
  122.    }
  123.  
  124.    public void setIPadSides(int var1) {
  125.       this.ixPad = var1;
  126.       this.sizepanel(true);
  127.       ((Component)this).invalidate();
  128.    }
  129.  
  130.    public int getIPadBottom() {
  131.       return this.iyPadBottom;
  132.    }
  133.  
  134.    public void setPadding(int var1, int var2, int var3, int var4) {
  135.       this.padtop = var1;
  136.       this.padbottom = var2;
  137.       this.padleft = var3;
  138.       this.padright = var4;
  139.       this.sizepanel(true);
  140.       ((Component)this).invalidate();
  141.    }
  142.  
  143.    public int getIPadSides() {
  144.       return this.ixPad;
  145.    }
  146.  
  147.    public void setLabel(String var1) {
  148.       this.label = var1 != null && var1.length() == 0 ? null : var1;
  149.       this.sizepanel(true);
  150.       ((Component)this).invalidate();
  151.    }
  152.  
  153.    public String getLabel() {
  154.       return this.label;
  155.    }
  156.  
  157.    public void setBorderColor(Color var1, boolean var2) {
  158.       this.borderColor = var1;
  159.       if (var2) {
  160.          this.labelColor = var1;
  161.       }
  162.  
  163.       ((Component)this).invalidate();
  164.    }
  165.  
  166.    public void setBorderColor(Color var1) {
  167.       this.setBorderColor(var1, false);
  168.    }
  169.  
  170.    public Color getBorderColor() {
  171.       return this.borderColor;
  172.    }
  173.  
  174.    public void setAlignStyle(int var1) {
  175.       this.labelAlignment = var1;
  176.       this.sizepanel(true);
  177.       ((Component)this).invalidate();
  178.    }
  179.  
  180.    public int getAlignStyle() {
  181.       return this.labelAlignment;
  182.    }
  183.  
  184.    public void setLabelColor(Color var1) {
  185.       this.labelColor = var1;
  186.       ((Component)this).invalidate();
  187.    }
  188.  
  189.    public Color getLabelColor() {
  190.       return this.labelColor;
  191.    }
  192.  
  193.    public void setBevelStyle(int var1) {
  194.       this.style = var1;
  195.       ((Component)this).invalidate();
  196.    }
  197.  
  198.    public int getBevelStyle() {
  199.       return this.style;
  200.    }
  201.  
  202.    public void setInternalInsets(Insets var1) {
  203.       this.internalInsets = var1;
  204.       this.sizepanel(true);
  205.       ((Component)this).invalidate();
  206.    }
  207.  
  208.    public Insets getInternalInsets() {
  209.       return this.internalInsets;
  210.    }
  211.  
  212.    public void layout() {
  213.       this.sizepanel(false);
  214.       this.panel.layout();
  215.    }
  216.  
  217.    public Dimension minimumSize() {
  218.       return this.preferredSize();
  219.    }
  220.  
  221.    public Dimension preferredSize() {
  222.       Dimension var1 = this.panel.preferredSize();
  223.       var1.width = Math.max(var1.width, this.getLabelWidthMargin());
  224.       var1.width += this.padleft + this.padright + this.ixPad * 2 + 1;
  225.       var1.height += this.getLabelTopMargin() + this.padbottom + this.iyPadTop + this.iyPadBottom + 1;
  226.       return var1;
  227.    }
  228.  
  229.    public void setLayout(LayoutManager var1) {
  230.       if (this.panel != null) {
  231.          this.panel.setLayout(var1);
  232.       }
  233.  
  234.    }
  235.  
  236.    public LayoutManager getLayout() {
  237.       return this.panel.getLayout();
  238.    }
  239.  
  240.    public Component add(Component var1) {
  241.       return this.panel.add(var1);
  242.    }
  243.  
  244.    public Component add(String var1, Component var2) {
  245.       return this.panel.add(var1, var2);
  246.    }
  247.  
  248.    public Component add(Component var1, int var2) {
  249.       return var1 == this.panel ? super.add(var1, var2) : this.panel.add(var1, var2);
  250.    }
  251.  
  252.    public void remove(Component var1) {
  253.       this.panel.remove(var1);
  254.    }
  255.  
  256.    public void removeAll() {
  257.       this.panel.removeAll();
  258.    }
  259.  
  260.    public void reshape(int var1, int var2, int var3, int var4) {
  261.       super.reshape(var1, var2, var3, var4);
  262.       this.sizepanel(false);
  263.    }
  264.  
  265.    public void update(Graphics var1) {
  266.       Dimension var2 = ((Component)this).size();
  267.       Insets var3 = this.insets();
  268.       var1.setColor(((Component)this).getBackground());
  269.       if (var3.left > 0) {
  270.          var1.fillRect(0, 0, var3.left, var2.height);
  271.       }
  272.  
  273.       if (var3.top > 0) {
  274.          var1.fillRect(0, 0, var2.width, var3.top);
  275.       }
  276.  
  277.       if (var3.bottom > 0) {
  278.          var1.fillRect(0, var2.height - var3.bottom, var2.width, var3.bottom);
  279.       }
  280.  
  281.       if (var3.right > 0) {
  282.          var1.fillRect(var2.width - var3.right, 0, var3.right, var2.height);
  283.       }
  284.  
  285.       this.paint(var1);
  286.       this.panel.repaint();
  287.    }
  288.  
  289.    public int countComponents() {
  290.       return this.panel.countComponents();
  291.    }
  292.  
  293.    public Component getComponent(int var1) {
  294.       return this.panel.getComponent(var1);
  295.    }
  296.  
  297.    public Component[] getComponents() {
  298.       return this.panel.getComponents();
  299.    }
  300.  
  301.    public Insets insets() {
  302.       int var1 = this.getLabelTopMargin();
  303.       Insets var2 = this.getInternalInsets();
  304.       return new Insets(var1 + var2.top, var2.left, var2.bottom, var2.right);
  305.    }
  306.  
  307.    void sizepanel(boolean var1) {
  308.       Dimension var2 = ((Component)this).size();
  309.       if (var1 || this.oldSize.width != var2.width || this.oldSize.height != var2.height) {
  310.          this.oldSize = ((Component)this).size();
  311.          this.panel.reshape(this.padleft + this.ixPad, this.getLabelTopMargin() + this.iyPadTop, this.oldSize.width - this.padright - this.padleft - this.ixPad * 2 - 1, this.oldSize.height - this.padbottom - this.getLabelTopMargin() - this.iyPadBottom - this.iyPadTop - 1);
  312.       }
  313.  
  314.    }
  315.  
  316.    public void paint(Graphics var1) {
  317.       this.sizepanel(false);
  318.       var1.setColor(((Component)this).getBackground());
  319.       this.draw(var1);
  320.    }
  321.  
  322.    void draw(Graphics var1) {
  323.       Dimension var2 = ((Component)this).size();
  324.       int var3 = this.padtop;
  325.       FontMetrics var4 = ((Component)this).getFontMetrics(((Component)this).getFont());
  326.       var1.clipRect(0, 0, var2.width, var2.height);
  327.       if (this.label != null && var4 != null) {
  328.          var3 = (var4.getAscent() + var4.getDescent() + this.padtop) / 2;
  329.       }
  330.  
  331.       int var5 = this.padleft;
  332.       int var7 = var2.width - this.padleft - this.padright - 1;
  333.       int var8 = var2.height - 1 - var3 - this.padbottom;
  334.       this.drawBorder(var1, var5, var3, var7, var8);
  335.       this.drawLabel(var1, var4);
  336.    }
  337.  
  338.    void drawBorder(Graphics var1, int var2, int var3, int var4, int var5) {
  339.       switch (this.style) {
  340.          case 0:
  341.             var1.setColor(Color.gray);
  342.             var1.drawLine(var2, var3, var2 + var4, var3);
  343.             var1.drawLine(var2, var3, var2, var3 + var5);
  344.             var1.setColor(Color.white);
  345.             var1.drawLine(var2, var3 + var5, var2 + var4, var3 + var5);
  346.             var1.drawLine(var2 + var4, var3, var2 + var4, var3 + var5);
  347.             return;
  348.          case 1:
  349.             var1.setColor(Color.white);
  350.             var1.drawLine(var2, var3, var2 + var4, var3);
  351.             var1.drawLine(var2, var3, var2, var3 + var5);
  352.             var1.setColor(Color.gray);
  353.             var1.drawLine(var2, var3 + var5, var2 + var4, var3 + var5);
  354.             var1.drawLine(var2 + var4, var3, var2 + var4, var3 + var5);
  355.             return;
  356.          case 2:
  357.             var1.setColor(this.borderColor);
  358.             var1.drawRect(var2, var3, var4, var5);
  359.             return;
  360.          default:
  361.             var1.setColor(this.borderColor);
  362.             var1.drawRect(var2, var3, var4, var5);
  363.          case 3:
  364.       }
  365.    }
  366.  
  367.    void drawLabel(Graphics var1, FontMetrics var2) {
  368.       if (this.label != null && var2 != null) {
  369.          int var3 = 10;
  370.          Dimension var4 = ((Component)this).size();
  371.          if (((Component)this).getFont().getSize() > var3) {
  372.             var3 += ((Component)this).getFont().getSize() / 2;
  373.          }
  374.  
  375.          int var5 = var2.stringWidth(this.label);
  376.          int var6 = var2.getAscent();
  377.          int var7 = var2.getDescent();
  378.          int var8;
  379.          switch (this.labelAlignment) {
  380.             case 0:
  381.             default:
  382.                var8 = var3 + 7;
  383.                break;
  384.             case 1:
  385.                var8 = (var4.width - var5) / 2;
  386.                break;
  387.             case 2:
  388.                var8 = var4.width - var3 - (var5 + 7);
  389.          }
  390.  
  391.          int var10000 = var6 + this.padtop;
  392.          int var10 = var6 + var7 + this.padtop;
  393.          int var9 = (var3 - var10) / 2 + this.padtop + var6;
  394.          var1.setColor(((Component)this).getBackground());
  395.          var1.fillRect(var8 - 2, 0, var5 + 4, var3);
  396.          var1.setColor(this.labelColor);
  397.          var1.drawString(this.label, var8, var9 - 1);
  398.       }
  399.  
  400.    }
  401.  
  402.    protected int getLabelTopMargin() {
  403.       if (this.label == null) {
  404.          return this.padtop;
  405.       } else {
  406.          int var1 = this.padtop;
  407.          Font var2 = ((Component)this).getFont();
  408.          if (var2 != null) {
  409.             FontMetrics var3 = ((Component)this).getFontMetrics(var2);
  410.             var1 = var3.getAscent() + var3.getDescent() + this.padtop;
  411.          }
  412.  
  413.          return var1;
  414.       }
  415.    }
  416.  
  417.    int getLabelWidthMargin() {
  418.       if (this.label == null) {
  419.          return 0;
  420.       } else {
  421.          int var1 = 2 + this.internalInsets.left + this.internalInsets.right;
  422.          Font var2 = ((Component)this).getFont();
  423.          if (var2 != null) {
  424.             FontMetrics var3 = ((Component)this).getFontMetrics(var2);
  425.             var1 = Math.max(var1, 2 + var3.stringWidth(this.label) + 10 + 4);
  426.          }
  427.  
  428.          return var1;
  429.       }
  430.    }
  431.  
  432.    public void setBackground(Color var1) {
  433.       super.setBackground(var1);
  434.       this.panel.setBackground(var1);
  435.    }
  436. }
  437.